package Semester_3.src.useJDBC;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;


public class JDBCdemo {
    public static void main(String[] args) throws Exception{
        Demo2();
    }
    public static void Demo1() throws Exception {
        //关于JDBCJava数据库操作的快速入门测试
        //注册驱动，在MySQL5.0之后的版本不需要手动注册驱动，只需要在jar包选择作用域之后就可以自动注册驱动
        Class.forName("com.mysql.jdbc.Driver");
        //获取链接
        String url="jdbc:mysql://10.210.83.60:3306/test";//需要链接的数据库的地址，标准写法：jdbc:mysql://IP地址：3306/数据库名
//        String url = "jdbc:mysql:///test";当链接的是本机的MySQL且端口号为默认的3306时，则可以将端口号简写为这样。
        String username="root";//用户名
        String password ="@gaoyang1";//密码
        Connection conn = DriverManager.getConnection(url,username,password);
        //定义SQL代码
        String sql ="update class set type = '选修' where c_no = 1;";
        //获取执行SQL语句的对象Statement
        Statement s = conn.createStatement();
        int i = s.executeUpdate(sql);
        //处理结果,返回被影响即被修改的行数。
//        System.out.println(i);
        //释放资源
        conn.close();
        s.close();
    }
    public static void Demo2() throws Exception{
        String url ="jdbc:mysql:///test";
        String user = "root";
        String password = "@gaoyang1";
        Connection con = DriverManager.getConnection(url,user,password);
        String sql1 = "update class set type = '选修' where c_no = 2";
        String sql2 = "update class set type = '选修' where c_no = 3";
        Statement s = con.createStatement();
        //Java中使用了try-catch快来进行事务的回滚，并保证了进行事务的代码可以同时成功或同时失败
        try{
            con.setAutoCommit(false);//开启事务
            int con1 = s.executeUpdate(sql1);
            int con2 = s.executeUpdate(sql2);
            System.out.println(con1);
            System.out.println(con2);
            con.commit();//结束事务
        }catch(Exception e){
            e.printStackTrace();
            con.rollback();//当出现异常的时候，回滚到事务开始之前的状态
        }finally {
            s.close();
            con.close();
        }
    }
}
